package entities;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;

@Entity
public class CPR extends EntidadBase {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@GeneratedValue
	@Id
	private int idCPR;
	private float porcentajeGanancia;
	
	@OneToOne(cascade = CascadeType.REMOVE)
	@JoinColumn (name ="idComparativa")
	private ComparativaDePrecios cdp;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<ODV> oficinas;

	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<CondicionVenta> condicionesVenta;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<Remito> remitos;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<Proveedor> proveedores;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<MovimientoStock> movimientosStock;

	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<Factura> facturas;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<Cotizacion> cotizaciones;
	
	@OneToMany(cascade = CascadeType.REMOVE)
	@LazyCollection(LazyCollectionOption.FALSE)
	@JoinColumn (name = "idCPR")
	private List<OrdenDeCompra> ordenesCompra;
	
	public CPR() {
		oficinas = new ArrayList<ODV>();
		condicionesVenta = new ArrayList<CondicionVenta>();
		remitos = new ArrayList<Remito>();
		proveedores = new ArrayList<Proveedor>();
		movimientosStock = new ArrayList<MovimientoStock>();
		cotizaciones = new ArrayList<Cotizacion>();
		facturas = new ArrayList<Factura>();
		ordenesCompra = new ArrayList<OrdenDeCompra>();
	}


	public int getIdCPR() {
		return idCPR;
	}


	public void setIdCPR(int idCPR) {
		this.idCPR = idCPR;
	}


	public float getPorcentajeGanancia() {
		return porcentajeGanancia;
	}


	public void setPorcentajeGanancia(float porcentajeGanancia) {
		this.porcentajeGanancia = porcentajeGanancia;
	}


	public List<ODV> getOficinas() {
		return oficinas;
	}


	public void setOficinas(List<ODV> oficinas) {
		this.oficinas = oficinas;
	}


	public List<CondicionVenta> getCondicionesVenta() {
		return condicionesVenta;
	}


	public void setCondicionesVenta(List<CondicionVenta> condicionesVenta) {
		this.condicionesVenta = condicionesVenta;
	}


	public List<Remito> getRemitos() {
		return remitos;
	}


	public void setRemitos(List<Remito> remitos) {
		this.remitos = remitos;
	}


	public List<Proveedor> getProveedores() {
		return proveedores;
	}


	public void setProveedores(List<Proveedor> proveedores) {
		this.proveedores = proveedores;
	}


	public List<MovimientoStock> getMovimientosStock() {
		return movimientosStock;
	}


	public void setMovimientosStock(List<MovimientoStock> movimientosStock) {
		this.movimientosStock = movimientosStock;
	}


	public ComparativaDePrecios getComparativaDePrecios() {
		return cdp;
	}


	public void setComparativaDePrecios(ComparativaDePrecios cdp) {
		this.cdp = cdp;
	}


	public List<Factura> getFacturas() {
		return facturas;
	}


	public void setFacturas(List<Factura> facturas) {
		this.facturas = facturas;
	}


	public List<Cotizacion> getCotizaciones() {
		return cotizaciones;
	}


	public void setCotizaciones(List<Cotizacion> cotizaciones) {
		this.cotizaciones = cotizaciones;
	}


	public List<OrdenDeCompra> getOrdenesCompra() {
		return ordenesCompra;
	}


	public void setOrdenesCompra(List<OrdenDeCompra> ordenesCompra) {
		this.ordenesCompra = ordenesCompra;
	}
	
	
}
